package com.pmcc.utils;

import java.math.BigDecimal;

/**
 * 数学工具类
 * @auther 姚楠
 */
public class RoundUtil {

    /**
     *取精度转换double数据
     * @param value 数据
     * @param scale 精度位数
     * @param roundingMode 精度取值方式
     * @return  精度计算后的数据
     */
    public static double round(double value, int scale, int roundingMode) {
                 BigDecimal bd = new BigDecimal(value);
                 bd = bd.setScale(scale, roundingMode);
                 double d = bd.doubleValue();
                 bd = null;
                 return d;
    }

    /**
     * 向上取精度保留小数
     * @param value
     * @param scale
     * @return
     */
    public static double roundUp(double value,int scale){
        BigDecimal bd = new BigDecimal(value);
        bd = bd.setScale(scale, BigDecimal.ROUND_UP);
        double d = bd.doubleValue();
        bd = null;
        return d;
    }

    /**
     * 向上取精度保留2位小数
     * @param value
     * @return
     */
    public  static double roundUp(double value){
        BigDecimal bd = new BigDecimal(value);
        bd = bd.setScale(2, BigDecimal.ROUND_UP);
        double d = bd.doubleValue();
        bd = null;
        return d;
    }
    /**
     * 向下取精度保留小数
     * @param value
     * @param scale
     * @return
     */
    public static double roundDown(double value, int scale){
        BigDecimal bd = new BigDecimal(value);
        bd = bd.setScale(scale, BigDecimal.ROUND_DOWN);
        double d = bd.doubleValue();
        bd = null;
        return d;
    }

    /**
     * 向下取精度保留2位小数
     * @param value
     * @return
     */
    public static double roundDown(double value){
        BigDecimal bd = new BigDecimal(value);
        bd = bd.setScale(2, BigDecimal.ROUND_DOWN);
        double d = bd.doubleValue();
        bd = null;
        return d;
    }

}
